import tkinter as tk
#插件命令 pip install PyExecJS 
import execjs

# 国家词库
DATA = {
    '俄罗斯': 'ELuoSi',
    '加拿大': 'JiaNanDa',
    '中国': 'ZhongGuo',
    '美国': 'MeiGuo',
    '巴西': 'BaXi',
    '澳大利亚': 'AoDaLiYa',
    '印度': 'YinDu',
    '阿根廷': 'AGenTing',
    '哈萨克斯坦': 'HaShaKeSiTan',
    '阿尔及利亚': 'AErJiLiYa'
}
# JS 文件
JS = "2/2/Convert_Pinyin.js"


# 核心算法
def similar(key):
    global JS
    # 监听回车或者空格键
    if key.keycode == 32 or key.keycode == 13:
        # 返回字符串
        txt = input.get()
        print(txt)
        # 返回字符串的全写拼音，首字母大写
        with open(JS, 'r',encoding="UTF-8") as file:
            js_code = file.read()
            # 编译 JavaScript 代码
            ctx = execjs.compile(js_code)
            # 返回字符串的全写拼音，首字母大写
            PinYin = ctx.eval('pinyin.getFullChars("'+ txt +'")')
            # 返回字符串的简写字母
            # PinYin = ctx.eval('pinyin.getCamelChars("'+ txt +'")')
            # PinYin = instance.call('getCamelChars', txt)
            # 返回拼音的长度
            ls = len(PinYin)
            is_max = 0
            is_name = ''
            # 遍历词库
            for k in DATA:
                nation = DATA[k]
                # 遍历国家词库拼音
                if len(nation) >= ls:
                    # 计算匹配数
                    ok = 0
                    for i in range(ls):
                        if PinYin[i] == nation[i]:
                            ok+= 1
                    # 返回最大匹配的国家名
                    if ok> is_max:
                        is_max = ok
                        is_name = k
            # 更新输出框的文本
            show.config(text=is_name)

# 创建主窗口
root = tk.Tk()
root.title("相似推荐")

# 创建输入框
input = tk.Entry(root)
input.pack()
input.bind("<KeyRelease>", similar)

# 创建输出框
show = tk.Label(root)
show.pack()
# 运行主循环
root.mainloop()